/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package HelperClasses.Database;

import entertainmentguide.entity.Restaurant;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import manageDataBase.DBManager;

/**
 *
 * 
 */
public   class AllRestaurants {

    // επιστρέφει λίστα όλων των εστιατορίων
    static public ArrayList<Restaurant>  getArrayList(){
        
        ArrayList<Restaurant> arrayAllRestaurants;
        try {
            // διαβάζει όλες τις εγγραφές restaurant από την Βάση Δεδομένων
            DBManager db = new DBManager();
            arrayAllRestaurants = db.getAllRestaurants();
            db.closeDB();
            //επιστρέφει την λίστα εστιατορίων
            return arrayAllRestaurants;
        } catch (SQLException ex) {
            Logger.getLogger(AllRestaurants.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }
    

    
     static public TableModel forTable(ArrayList<Restaurant> listOfRestaurants){
        DBManager db = new DBManager();
        DefaultTableModel model = new DefaultTableModel(){
            // θέτω το table μη editable
            // (ο χρήστης δεν μπορεί να κάνει edit τα κελιά του πίνακα)   
            @Override
            public boolean isCellEditable(int rowIndex, int mColIndex) {
                return false;
            }
        };
        // Δημιουργώ στήλες πίνακα φόρμας
        model.addColumn("ID"); // αυτή η στήλη δεν θα φαίνεται
        model.addColumn("ONOMA");
        model.addColumn("ΔΙΕΥΘΥΝΣΗ");
        model.addColumn("ΠΕΡΙΟΧΗ");
        model.addColumn("ΤΗΛΕΦΩΝΟ");
        model.addColumn("ΚΑΤΗΓΟΡΙΑ");
        // ανατρέχω σε όλες τις εγγραφές εστιατορίων στην βάση δεδομένων
        for (Restaurant r : listOfRestaurants){
            try {
                //ανακτούμε τις τιμές κάθε στήλης για κάθε εγγραφή εστιατορίου
                int id= r.getRestId(); // αυτή η τιμή δεν θα φαίνεται στον πίνακα
                String Name = r.getRestaurantName();
                String Address = r.getAddress();
                String Phone = r.getPhone();
                //ανακαλώ την περιγραφή της περιοχής για το αντίστοιχο AreaID
                String AreaId;
                AreaId= db.getAreaById(r.getAreaId()).getAreaName();
                //ανακαλώ την περιγραφή της κατηγορίας για το αντίστοιχο CategoryID
                String CategoryId;
                CategoryId = db.getCategoryById(r.getCategoryId()).getCategoryName();
                // προσθέτω την εγγραφή στον γραμμή του πίνακα της φόρμας
                model.addRow(new Object[]{id,Name,Address,AreaId,Phone,CategoryId});
            } catch (SQLException ex) {
                Logger.getLogger(AllRestaurants.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        try {
            db.closeDB();
        } catch (SQLException ex) {
            Logger.getLogger(AllRestaurants.class.getName()).log(Level.SEVERE, null, ex);
        }
        return model;
    }
    
}
